package com.social.service;

import com.social.pojo.RegistrationOfCases;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 来案登记管理
 */
public interface RegistraionOfCasesService {
    /**
     * 案件登记分页查询
     *
     * @param typeStatus     类型状态 (1、立案登记 2、日常审批 3、专项审批)
     * @param approvalStatus 审批状态 (0：提交未审批，1：审批通过，2：审批未通过，3：结案归档,4:立案未提交);
     * @param page           当前页
     * @param pageNum        每页显示条数
     * @return 页面
     */
    List<RegistrationOfCases> caseRegistrationPage(Integer typeStatus, Integer approvalStatus, Integer page, Integer pageNum);

    /**
     * 案件登记模糊查询
     *
     * @param unitName           单位名称
     * @param organizationalCode 组织机构代码
     * @param nameOfRegistrant   登记人姓名
     * @param page               当前页
     * @param pageNum            每页显示条数
     * @param typeStatus         类型状态 (1、立案登记 2、日常审批 3、专项审批)
     * @param approvalStatus     审批状态 (0：提交未审批，1：审批通过，2：审批未通过，3：结案归档,4:立案未提交);
     * @return 页面
     */
    List<RegistrationOfCases> caseRegistrationLike(String unitName, String nameOfRegistrant, String organizationalCode, Integer typeStatus, Integer approvalStatus, Integer page, Integer pageNum);

    /**
     * 修改状态 案件提交功能
     *
     * @param typeStatus     类型状态 (1、立案登记 2、日常审批 3、专项审批)
     * @param approvalStatus 审批状态 (0：提交未审批，1：审批通过，2：审批未通过，3：结案归档,4:立案未提交);
     * @param id             RegistrationOfCases primary key
     * @return 修改状态
     */
    int updateStatus(Integer approvalStatus, Integer typeStatus, Integer id);

    /**
     * 案件登记所有条数以及模糊查询返回条数
     *
     * @param unitName           单位名称
     * @param nameOfRegistrant   登记人姓名
     * @param organizationalCode 组织机构代码
     * @param typeStatus         类型状态 (1、立案登记 2、日常审批 3、专项审批)
     * @param approvalStatus     审批状态 (0：提交未审批，1：审批通过，2：审批未通过，3：结案归档,4:立案未提交);
     * @return 查询数量
     */
    Integer caseRegistrationCount(String unitName, String nameOfRegistrant, String organizationalCode, Integer typeStatus, Integer approvalStatus);

    /**
     * 查询所有
     *
     * @return 查询的所有数据
     */
    List<RegistrationOfCases> selectAll();

    /**
     * 根据主键删除
     *
     * @param id RegistrationOfCases primary key
     * @return 删除状态
     */
    int deleteByPrimaryKey(Integer id);

    /**
     * 添加数据
     *
     * @param record 需要添加的对象
     * @return 添加状态
     */
    int insert(RegistrationOfCases record);

    /**
     * sql动态添加数据
     *
     * @param record 需要添加的对象
     * @return 添加状态
     */
    int insertSelective(RegistrationOfCases record);

    /**
     * 根据primary key 查询
     *
     * @param id RegistrationOfCases primary key
     * @return RegistrationOfCases 对象
     */
    RegistrationOfCases selectByPrimaryKey(Integer id);

    /**
     * sql动态修改数据
     *
     * @param record 需要修改的对象
     * @return 修改状态
     */
    int updateByPrimaryKeySelective(RegistrationOfCases record);

    /**
     * 修改数据
     *
     * @param record 需要修改的对象
     * @return 修改状态
     */
    int updateByPrimaryKey(RegistrationOfCases record);

    /**
     * 批量删除数据
     *
     * @param id RegistrationOfCases primary key
     * @return 修改状态
     */
    int bulkDelete(List<Integer> id);

    /**
     * 批量导出
     *
     * @param id RegistrationOfCases primary key
     * @return 存在集合中的RegistrationOfCases对象
     */
    List<RegistrationOfCases> bulkExport(Integer[] id);

}
